/**
 * class类（对request进行promise封装）
 * @description:
 * @author: junyong.hong
 * @createTime: 2019/7/6
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
import {config} from '../config.js'

// 错误提示信息
const tips = {
    1: '抱歉，出现了一个错误',
    1005: 'appkey无效',
    3000: '期刊不存在'
}

class HTTP {
    request ({url, data = {}, method = 'GET'}) {
        return new Promise((resolve, reject) => {
            this._request(url, resolve, reject, data, method)

        })
    }

    // get请求
    _request(url, resolve, reject, data = {}, method = 'GET') {
        wx.request({
            url: config.api_base_url + url,
            method: method,
            data: data,
            header: {
                'content-type': 'application/json',
                'appkey': config.appkey
            },
            success: (res) => {
                const code = res.statusCode.toString()
                if (code.startsWith('2')) {
                    // 返回参数
                    resolve(res.data)
                } else {
                    reject()
                    // appkey错误
                    const error_code = res.data.error_code
                    this._show_error(error_code)
                }
            },
            fail: (err) => {
                reject()
                // 断网
                this._show_error(1)
            }
        })
    }

    // 通用错误提示：_代表：私有方法
    _show_error(error_code) {
        // 默认为1
        if (!error_code) {
            error_code = 1
        }

        const tip = tips[error_code]
        wx.showToast({
            title: tip ? tip : tip[1],
            icon: 'none',
            duration: 2000
        })
    }
}

export {HTTP}
